﻿'''
题目描述
在斗地主扑克牌游戏中， 扑克牌由小到大的顺序为：3,4,5,6,7,8,9,10,J,Q,K,A,2，玩家可以出的扑克牌阵型有：单张、对子、顺子、
飞机、炸弹等。
其中顺子的出牌规则为：由至少5张由小到大连续递增的扑克牌组成，且不能包含2。
例如：{3,4,5,6,7}、{3,4,5,6,7,8,9,10,J,Q,K,A}都是有效的顺子；而{J,Q,K,A,2}、 {2,3,4,5,6}、{3,4,5,6}、{3,4,5,6,8}等都
不是顺子。
给定一个包含13张牌的数组，如果有满足出牌规则的顺子，请输出顺子。
如果存在多个顺子，请每行输出一个顺子，且需要按顺子的第一张牌的大小（必须从小到大）依次输出。
如果没有满足出牌规则的顺子，请输出No。
输入描述
13张任意顺序的扑克牌，每张扑克牌数字用空格隔开，每张扑克牌的数字都是合法的，并且不包括大小王：
2 9 J 2 3 4 K A 7 9 A 5 6
不需要考虑输入为异常字符的情况
输出描述
组成的顺子，每张扑克牌数字用空格隔开：
3 4 5 6 7
示例1
输入
2 9 J 2 3 4 K A 7 9 A 5 6
输出
3 4 5 6 7
说明
13张牌中，可以组成的顺子只有1组：3 4 5 6 7。
示例2
输入：
2 9 J 10 3 4 K A 7 Q A 5 6
输出：
3 4 5 6 7
9 10 J Q K A
说明
13张牌中，可以组成2组顺子，从小到大分别为：3 4 5 6 7 和 9 10 J Q K A
示例3
输入：
2 9 9 9 3 4 K A 10 Q A 5 6
输出：
No
说明
13张牌中，无法组成顺子。
解题思路
这个问题涉及解析一个包含13张扑克牌的数组，目的是识别出所有符合条件的有效顺子。顺子定义为至少包含5张按牌面大小顺序连续
的扑克牌，不包括牌面为“2”的牌。
题目描述存在不明确之处，未具体说明是要求解最多数量的顺子，还是单个最长的顺子。
考虑以下示例：
4 5 6 7 8 6 7 8 9 10
如果目标是找到数量最多的顺子，答案将是两个独立的顺子：【4 5 6 7 8】和【6 7 8 9 10】。
如果目标是找到单个最长的顺子，答案则是【4 5 6 7 8 9 10】。
此外，如果【数量最多的顺子】，尽管【5 6 7 8 9】也是一个有效顺子，但在按照第二个示例的选择规则，它不是答案。这表明题目
可能更倾向于寻找最长的顺子，且实际机考按照最长的去找，通过率高于数量最多。
'''
#输入描述：
#13张任意顺序的扑克牌，每张扑克牌数字用空格隔开，每张扑克牌的数字都是合法的，并且不包括大小王：
#2 9 J 2 3 4 K A 7 9 A 5 6
#不需要考虑输入为异常字符的情况
#输出描述：
#组成的顺子，每张扑克牌数字用空格隔开：
#3 4 5 6 7

#定义一个字典映射扑克牌到数字，方便比较
card_to_num = {
    "3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"10":10,"J":11,"Q":12,"K":13,"A":14,"2":16
    }

#读取输入
cards = input().split()
#对cards按对应值排序
cards.sort(key= lambda x: card_to_num[x])
#定义顺子列表,并加入排序后的首张牌
shunzi = []
shunzi.append(cards[0])
#定义结果列表，并加入首个顺子
results = []
results.append(shunzi)
#遍历剩余的牌，寻找顺子,注意从第2张牌开始
for card in cards[1:]:
    added = False   #是否加入顺子
    for shun in results:
        if card_to_num[card] == card_to_num[shun[-1]] + 1:
            shun.append(card)
            added = True    
            break   #已加入，跳出循环
    #如果没有加入任何顺子，新建一个顺子并加入
    if not added:
        new_shunzi = []
        new_shunzi.append(card)
        results.append(new_shunzi)
#计算满足条件的顺子即大于等于5
output_result = []
for result in results:
    if len(result) >= 5:
        output_result.append(result)
#各顺子按第一个牌排序
output_result.sort(key= lambda x: x[0])

#输出
if len(output_result) != 0:
    for result in output_result:
        print(' '.join(result))
else:
    print("No")

